// 导入数据库操作模块
const db = require('../db/index')
// 导入处理路径的 path 核心模块
const path = require('path')

// 发布新文章的处理函数
/*
存在作者操作其他作者文章的情况
 */
exports.addArticle = (req, res) => {
	console.log(req.body) // 文本类型的数据
	console.log('--------分割线----------')
	console.log(req.file) // 文件类型的数据
	// 手动判断是否上传了文章封面
	if (!req.file || req.file.fieldname !== 'cover_img') return res.cc('文章封面是必选参数！')
	const articleInfo = {
		// 标题、内容、状态、所属的分类Id
		...req.body,
		// 文章封面在服务器端的存放路径
		cover_img: path.join('/uploads', req.file.filename),
		// 文章发布时间
		pub_date: new Date(),
		// 文章作者的Id
		author_id: req.user.id,
	}
	const sql = `insert into ev_articles set ?`
	db.query(sql, articleInfo, (err, results) => {
		// 执行 SQL 语句失败
		if (err) return res.cc(err)

		// 执行 SQL 语句成功，但是影响行数不等于 1
		if (results.affectedRows !== 1) return res.cc('发布文章失败！')

		// 发布文章成功
		res.cc('发布文章成功', 0)
	})
}

// 获取文章的列表数据
exports.getArticle = function(req, res) {
	const data = req.query
	const start_index = data.pagesize * (data.pagenum - 1)
	const end_index = start_index + data.pagesize
	// console.log(data)
	// TODO 添加查询条件
	if (data.cate_id !== '' && data.state !== '') {
		console.log(111)
		const sql = `SELECT a.id,a.title,a.pub_date,a.state,b.name cate_name FROM ev_articles a,ev_article_cate b WHERE is_delete=0 and a.cate_id = b.id and a.cate_id=? and a.state=?`
		db.query(sql, [data.cate_id, data.state], function(err, results) {
			// 执行 SQL 语句失败
			if (err) return res.cc(err)
			return res.send({
				status: 0,
				message: '获取文章列表成功！',
				data: results.slice(start_index, end_index),
				total: results.length
			})
		})
		return;
	}
	if (data.cate_id !== '') {
		const sql = `SELECT a.id,a.title,a.pub_date,a.state,b.name cate_name FROM ev_articles a,ev_article_cate b WHERE is_delete=0 and a.cate_id = b.id and a.cate_id=?`
		db.query(sql, data.cate_id, function(err, results) {
			// 执行 SQL 语句失败
			if (err) return res.cc(err)
			return res.send({
				status: 0,
				message: '获取文章列表成功！',
				data: results.slice(start_index, end_index),
				total: results.length
			})
		})
		return;
	}
	if (data.state !== '') {
		const sql = `SELECT a.id,a.title,a.pub_date,a.state,b.name cate_name FROM ev_articles a,ev_article_cate b WHERE is_delete=0 and a.cate_id = b.id and a.state=?`
		db.query(sql, data.state, function(err, results) {
			// 执行 SQL 语句失败
			if (err) return res.cc(err)
			res.send({
				status: 0,
				message: '获取文章列表成功！',
				data: results.slice(start_index, end_index),
				total: results.length
			})
		})
		return;
	}
	const sql = `SELECT a.id,a.title,a.pub_date,a.state,b.name cate_name FROM ev_articles a,ev_article_cate b WHERE is_delete=0 and a.cate_id = b.id`
	db.query(sql, function(err, results) {
		// 执行 SQL 语句失败
		if (err) return res.cc(err)
		res.send({
			status: 0,
			message: '获取文章列表成功！',
			data: results.slice(start_index, end_index),
			total: results.length
		})
	})
}

// 根据 Id 删除文章数据
exports.delArticleById = function (req, res) {
	// console.log(req.params)
	const sql = `update ev_articles set is_delete=1 where id=?`
	db.query(sql, req.params.id, (err, results)=>{
		if (err) return res.cc(err)
		if (results.affectedRows !== 1) return res.cc('删除失败！')
		res.cc('删除成功！', 0)
	})
}

// 根据 Id 获取文章详情
exports.getArticleById = function(req, res) {
	const sql = `select * from ev_articles where id=?`
	db.query(sql, req.params.id, function(err,results){
		if (err) return res.cc(err)
		if (results.length !== 1) return res.cc('获取文章失败！')
		res.send({
			status: 0,
			message: '获取文章成功！', 
			data: results[0]
		})
	})
}

// 根据 Id 更新文章信息
exports.updateArticleById = function(req, res) {
	data = req.body
	// 手动判断是否上传了文章封面
	if (!req.file || req.file.fieldname !== 'cover_img') return res.cc('文章封面是必选参数！')
	const articleInfo = {
		title: data.title,
		cate_id: data.cate_id,
		content: data.content,
		state: data.state,
		cover_img: path.join('/uploads', req.file.filename),
		pub_date: new Date(),
		author_id: req.user.id,
	}
	const sql = `update ev_articles set ? where id=?`
	db.query(sql, [articleInfo, data.id], function(err, results){
		if (err) return res.cc(err)
		if (results.affectedRows !== 1) return res.cc('修改文章失败！')
		res.cc('修改文章成功！', 0)
	})
}
